package Day13_StringBuilder类;

/*
    StringBuilder底层就是靠一个byte[]数组存放内容,初始容量为16
                                            容量: 最多可容纳的数量,容量16,  hello占5
                                                               容量16, helloworld占10

                                            长度: 真实占用的数量,容量16,  hello占5        .length()==5
                                                             容量16, helloworld占10   .length()==10

    StringBuilder是一个可变的字符串

    StringBuilder类的构造方法:
            1. StringBuilder sb  = new StringBuilder              创建一个空的StringBuilder
            2. StringBuilder sb1 = new StringBuilder("hello");    创建一个指定内容的StringBuilder

    StringBuilder类的添加和反转:
                   1. sb.append()     将数据添加到StringBuilder,返回值是一个StringBuilder对象,可以继续append,可以链式调用
                                      sb.append().append().append();
                   2. sb.reserve()    将StringBuilder的内容反转
                   3. sb.insert()     将数据添加到StringBuilder指定索引位置

 */

public class StringBuilder类 {
    public static void main(String[] args) {
        //1.StringBuilder()  创建一个空的StringBuilder

        StringBuilder sb = new StringBuilder();
        System.out.println("sb:" + sb);

        //2.StringBuilder(String str)  创建一个指定内容的StringBuilder

        StringBuilder sb1 = new StringBuilder("hello");
        System.out.println("sb1:" + sb1);

        //3.添加:StringBuilder append(Xxx x)
        sb1.append("world");
        sb1.append(3.14);
        sb1.append(true);
        System.out.println("sb1:" + sb1);

        //4.反转: StringBuilder reserve()
        sb1.reverse();
        System.out.println("sb1:" + sb1);

        //5.将数据添加到StringBuilder指定索引位置
        sb1.insert(2,"zzz");
        System.out.println("sb1:" + sb1);

        //6.链式调用,append返回值是一个StringBuilder对象,可以继续append
        sb1.append("aa").append(666).append(6.66).append(false);
        System.out.println("sb1:" + sb1);
    }
}
